package cn.edu.zzuli;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.ArrayList;

/**
 * @Date: 2021/3/10 18:13
 * @Author: 绯色下午茶
 * @Description: 流式计算
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
class User {
    private Integer id;
    private String userName;
    private int age;
}

public class Stream {
    public static void main(String[] args) {
        /**
         * 用户id为偶数
         * 用户年龄大于24
         * 用户的姓名大写
         * 用户名倒排序
         * 输出第一个
         */
        ArrayList<User> list = new ArrayList<User>();
        list.add(new User().setAge(20).setId(11).setUserName("a"));
        list.add(new User().setAge(21).setId(12).setUserName("b"));
        list.add(new User().setAge(22).setId(13).setUserName("c"));
        list.add(new User().setAge(23).setId(14).setUserName("d"));
        list.add(new User().setAge(25).setId(15).setUserName("e"));
        list.stream()
                .filter(
                        u -> u.getId() % 2 == 0     //用户id为偶数
                )
                .filter(
                        u -> u.getAge() > 20    //用户的年龄大于20
                ).map(
                u ->
                        u.getUserName().toUpperCase()   //用户的名字转为大写
                 )
                .sorted((o1, o2) ->
                        o2.compareTo(o1)     //逆序排序
                )
                .forEach(
                        System.out::println    //循环打印输出
                );

        /**
         * lambda表达式
         */
//        Userss userss = ()-> "abc";
//        System.out.println(userss.ss());
    }

}

interface Userss {
    String ss();
}
